import axios from 'axios';
import { ElMessage } from 'element-plus';
import { useAuthStore } from "../store/authStore";
import router from '../router';

// 创建一个 Axios 实例
const instance = axios.create({
  baseURL: 'http://localhost:5157/api', // 设置你的 API 基础 URL
  timeout: 10000, // 请求超时时间
  headers: {
    'Content-Type': 'application/json',
  },
});

// 请求拦截器：添加 token 或做其他请求前的处理
instance.interceptors.request.use(
  (config) => {
    // 在请求头添加 token
    const token = localStorage.getItem('token'); // 假设 token 存储在 localStorage 中
    if (token) {
      config.headers['Authorization'] = `Bearer ${token}`;
    }
    return config;
  },
  (error) => {
    return Promise.reject(error);
  }
);

// 响应拦截器：统一处理响应数据或错误
instance.interceptors.response.use(
  (response) => {
    // 统一处理响应数据
    return response.data;
  },
  (error) => {
    console.log(error);
    // 处理响应错误（比如 token 过期等）
    if (error.response && error.response.status === 401) {
      // 清空 localStorage
      localStorage.clear();
      const authStore = useAuthStore();
      authStore.logout()
      ElMessage.error('未授权或 Token 过期，跳转到登录页...')
      setTimeout(() => {
        // 跳转到登录页
        router.push('/login');
      }, 1500);  // 1500 毫秒即 1.5 秒
    } else {
      console.error('请求失败：', error.response);
    }
    return Promise.reject(error);
  }
);

export default instance;
